import numpy as np
import os

def gen_lp_norm_data():
    p = 2  # Lp 范数的 p 值，可以设置为1, 2, 或其他正数
    # 输入长度
    length = 8 * 2048  # 这里默认长度为
    # 输入张量：随机半精度
    input_x = (np.random.randn(length)).astype(np.float32)
    # golden：LpNorm 归一化
    abs_x = np.abs(input_x).astype(np.float32)
    if p == 1:
        norm = np.sum(abs_x)
    elif p == 2:
        norm = np.sqrt(np.sum(abs_x ** 2))
    else:
        norm = np.power(np.sum(abs_x ** p), 1.0/p)
    normed = (input_x.astype(np.float32) / norm).astype(np.float32)

    # 保存输入/输出
    os.makedirs("./input", exist_ok=True)
    os.makedirs("./output", exist_ok=True)
    input_x.tofile("./input/input_x.bin")
    normed.tofile("./output/golden.bin")
    print("data generated")

if __name__ == '__main__':
    gen_lp_norm_data()  # 这里默认 p=2
